#pragma once
#include<iostream>
#include<vector>
using namespace std;

class StringUtil{
public:

    static void checkLen(const string& str, const int& len){
        if(str.length() > len){
            throw string("Length exceeded");
        }
    }

    static string memStrToDiskStr(const string& str, const int& len){
        const int& strLen = str.length();
        if(strLen > len){
            throw string("length error");
        }
        return str + string(len - strLen, ' ');
    }

    static string diskDataToMemStr(const char* byteData, const int& subNum){
        string memStr;
        for(int i = 0; i < subNum; i++){
            const char& tmpC = byteData[i];
            if(tmpC == ' '){
                break;
            }
            memStr += tmpC;
        }
        return memStr;
    }

    static const char* toByteData(const string& str){
        return str.c_str();
    }

    static vector<string> splitStr(const string& str, const char& c){
        vector<string> splitRes;
        size_t startPos = 0;
        for(size_t tmpPos = 0; tmpPos < str.length(); tmpPos++){
            if(str[tmpPos] == c){
                splitRes.push_back(str.substr(startPos, tmpPos - startPos));
                startPos = tmpPos + 1;
            }
        }
        //添加结尾字符串
        splitRes.push_back(str.substr(startPos, str.length() - startPos));
        return splitRes;
    }
};
